package implementacion;

import java.util.Random;
import tda.ConjuntoItemsFacturaTDA;
import tda.ItemFactura;
//ESTO ES UN CONJUNTO DE DONDE SE GUARDAN ITEMS DE LAS FACTURAS, ESTE CONJUNTO SE USA EN FACTURACIOND.JAVA
//conjunto preparado para item factura
public class conjuntoFacturaD implements ConjuntoItemsFacturaTDA {

	class NodoItemFactura
	{
		ItemFactura item;
		NodoItemFactura sig;
	}
	
	NodoItemFactura referencia;
	int cantidad ;
	
	@Override
	public void inicializarConjunto() {
		referencia = null;
		cantidad= 0;
	}

	@Override
	public void agregar(ItemFactura item) {
		if(!existeItem(item.codigo))
		{
			NodoItemFactura nuevo;
			nuevo  = new NodoItemFactura();
			nuevo.item = item;
			
			nuevo.sig = referencia;
			referencia = nuevo;
			cantidad++;
		}
	}

	@Override
	public ItemFactura elegir() {
		Random r = new Random();
		int v = r.nextInt(cantidad);
		NodoItemFactura aux = referencia;
		int i = 0;
		while(i < v){
			aux = aux.sig;
			i++;
		}
		return aux.item;
		
	}

	@Override
	public void sacar(ItemFactura item) {
		NodoItemFactura aux = referencia;
		NodoItemFactura ant = referencia;
		if (referencia != null)
		{
			if(referencia.item.codigo  == item.codigo)
			{
		
				referencia = referencia.sig;
				cantidad--;
			}
			else
			{
				while(aux != null)
				{
				
					if(aux.item.codigo == item.codigo)
					{
	
						ant.sig = aux.sig;
						cantidad--;
						break;
					}
					ant = aux;
					aux = aux.sig;
				}
			}
		}
	
	}

	@Override
	public boolean conjuntoVacio() {
		return referencia==null;
	}

	@Override
	public boolean existeItem(int codArticulo) {
		NodoItemFactura  aux = referencia ;
		while(aux != null)
		{
			if(aux.item.codigo == codArticulo)
			{
				return true;
			}
			aux = aux.sig;
			
		}	
		return false;
	}

}
